Styled Mode 根據 Design token(設計標籤)規劃三種層級:primitive(原始)、semantic(語意) 以及 component(元件)。
blue-50
到 blue-900
。通常由語意使用,如 blue-500
可做為主色的背景色,但本身名稱不具有內容意義。primary.color
。語意標籤可對應於原始標籤或其他的語意標籤,設定時使用 colorScheme
群組進行語意標籤的定義,也可根據語意標籤設計對應深色模式。.inputtext.background
、按鈕元件的文字顏色對應 .button.color
。階層概念:button.background
按鈕元件標籤對應到 primary.color
語意標籤;primary.color
語意標籤又對應到 green.500
原始標籤。
theme:自訂預設初始的主題,本次採用 primeVue 的主題 Aura。
import PrimeVue from 'primevue/config';
import Aura from '@primevue/themes/aura';
const app = createApp(App);
app.use(PrimeVue, {
// Default theme configuration
theme: {
preset: Aura,
options: {
prefix: 'p', // 前綴,預設為 p
darkModeSelector: 'system',
cssLayer: false
}
}
});
其中,
preset
為主題設定, Aura 為 primeVue 提供的主題var(—p-primary-color)
,若使用預設可不寫。system
產生 @media (prefers-color-scheme: dark)
,若要進行深色模式的切換,須定義一個 CSS 類別選擇器(比如 .my-dark),在 document root 上切換此樣式,以達到深色模式的渲染。false
。如下程式碼在整合 tailwindCSS 時,order 的讀取會先以 tailwind-base 載入初始 reset 樣式或清除瀏覽器預設樣式,再讀取 primevue 主題設定樣式,最後讀取 tailwind 的通用類別。options: {
cssLayer: {
name: 'primevue',
order: 'tailwind-base, primevue, tailwind-utilities'
}
}
使用 definePreset 方法可自訂主題內容:
import PrimeVue from 'primevue/config';
import { definePreset } from '@primevue/themes';
import Aura from '@primevue/themes/aura';
const MyPreset = definePreset(Aura, {
// 將客製化樣式設定於此
});
app.use(PrimeVue, {
theme: {
preset: MyPreset // 取代 Aura
}
});
根據上述的 Styled Mode 規則設計,使用 semantic 設定 primary 主題色設定:
const MyPreset1 = definePreset(Aura, {
semantic: {
primary: {
50: '{indigo.50}',
100: '{indigo.100}',
...
950: '{indigo.950}'
}
}
});
app.use(PrimeVue, {
theme: {
preset: MyPreset1 // 取代 Aura
}
});
根據 semantic 內的 colorScheme 設定深淺色模式:
const MyPreset2 = definePreset(Aura, {
semantic: {
colorScheme: {
light: {
primary: {
50: '{indigo.50}',
100: '{indigo.100}',
...
950: '{indigo.950}'
}
},
dark: {
primary: {
50: '{zinc.50}',
100: '{zinc.100}',
...
950: '{zinc.950}'
}
}
}
}
});
app.use(PrimeVue, {
theme: {
preset: MyPreset2 // 取代 Aura
}
});
其他設定如表單樣式、Focus Ring 及元件可再依照專案所需客製樣式。
採用 rem
作為字體單位,1rem
即為 16px,若要將整體網站的文字大小設定為 14px,可採用如下設定:
html {
font-size: 14px;
}
上述提及的主題設定、深色模式及整合 tailwindCSS 會在後面有篇幅進行說明~
參考連結:https://primevue.org/theming/styled/
剛好在看 primeVue
以 preset: Aura
來看的話,primary-color 的預設顏色是綠色,如果想改成藍色的話應該怎麼調整比較好?
看了官網還是不太懂,明明調色盤有很多顏色可選
謝謝
您好,
此篇的 semantic 的應用 有提到可以透過 definepreset 更換主色,
需要設定 50-900 的相關色系
所以如果要更換成藍色可以在 main.js 設定下
import PrimeVue from 'primevue/config';
import { definePreset } from '@primevue/themes';
import Aura from '@primevue/themes/aura';
const MyPreset = definePreset(Aura, {
semantic: {
primary: {
50: '{blue.50}',
100: '{blue.100}',
200: '{blue.200}',
300: '{blue.300}',
400: '{blue.400}',
500: '{blue.500}',
600: '{blue.600}',
700: '{blue.700}',
800: '{blue.800}',
900: '{blue.900}',
950: '{blue.950}'
}
}
});
app.use(PrimeVue, {
theme: {
preset: MyPreset
}
});
其他可以更換的顏色我有在 theme 設定這篇的最下方提到可以查查,
可以試試能不能成功~
感謝回饋,沒想到改個主色就算客製化,總算看懂官網一些
一開始以為是在 options 那邊追加設定主色為藍色之類的就可以了說
結果都沒看到
v4 算剛改版,很多設定也跟之前不同,gpt 都會亂回